package com.hncj.controller;

import com.hncj.pojo.Phone;
import com.hncj.service.PhoneService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

/*
@Controller注解类型用于声明Spring类的实例是一个控制器
Spring可以使用扫描机制来找到应用程序中所有基于注解的控制器类，
为了保证Spring能找到你的控制器，需要在配置文件中声明组件扫描。
 */
/*
@RequestMapping注解用于映射url到控制器类或一个特定的处理程序方法。
可用于类或方法上。用于类上，表示类中的所有响应请求的方法都是以该地址作为父路径。
 */
@Controller
@RequestMapping("/phone")
public class PhoneController {

    /*
    @Autowired是根据byType自动装配的，加上@Qualifier则可以根据byName的方式自动装配
    @Qualifier不能单独使用。
     */
    @Autowired
    @Qualifier("PhoneServiceImpl")
    private PhoneService phoneService;

    //查询全部手机
    @RequestMapping("/allPhone")
    public String list(Model model){
        List<Phone> list = phoneService.queryAllPhone();
        model.addAttribute("list",list);
        return "allPhone";
    }

    //新增手机
    @RequestMapping("toAddPhone")
    public String toAddPhone(){
        return "addPhone";
    }
    @RequestMapping("addPhone")
    public String addPhone(Phone phone){
        phoneService.addPhone(phone);
        System.out.println(phone);
        return "redirect:/phone/allPhone";
    }

    //修改手机
    @RequestMapping("/toUpdatePhone")
    public String toUpdatePhone(Model model, int id){
        Phone phone = phoneService.queryPhoneById(id);
        System.out.println(phone);
        model.addAttribute("phone",phone);
        return "updatePhone";
    }

    @RequestMapping("/updatePhone")
    public String updatePhone(Model model,Phone phone){
        System.out.println(phone);
        phoneService.updatePhone(phone);
        Phone phone1 = phoneService.queryPhoneById(phone.getPhoneId());
        model.addAttribute("phone1",phone1);
        return "redirect:/phone/allPhone";
    }


    //删除手机
    @RequestMapping("/del/{id}")
    public String deletePhone(@PathVariable("id") int id){
        phoneService.deletePhone(id);
        return "redirect:/phone/allPhone";
    }

    //模糊查询
    @RequestMapping("/queryPhone")
    public String likePhoneName(Model model,String phoneName){
        List<Phone> phones = phoneService.queryPhoneByName("%" + phoneName + "%");
        model.addAttribute("list",phones);
        return "allPhone";
    }
}
